# 期末考试

# 题1
'''
在这一个月，我们学了python基础，简单总结下，有六种数据类型和函数。
(1)请从str，list,dict,set选出 1 种数据类型，进行归纳总结。
(2)请整理函数的知识点进行归纳总结。

#例  元组(tuple)
#1.可变不可变对象？序列还是非序列？
#2.操作元祖的方法有多少种，其中哪几个方法使用频率高，并选择1-3个方法进行代码展示
#3.是否可迭代
#4.索引和步长简单展示
#5.其他用法
#开放题，想到多少写多少，可以通过回顾视频以及查资料的方法完成此题。
#以元祖为例，完成1.2.3便可拿到此题的及格分。

#元组(tuple)
#1.元组是不可变对象，是序列
#2.操作元组的方法有2种，一种是count,一种是index
#示例
tu = (1,2,3,4,1,1)
new = tu.count(1)
print(new)
#示列
tu = (1,2,3,4,1,1)
new = tu.index(2)
print(new)
#3.可迭代
#开放题
tu = (1,2,3,4,1,1)
tu2 = ('a','b','c')
tu3 = tu + tu2
print(tu3)

tu = (1,2,3,4,1,1)
new = len(tu)
print(new)
'''
# 题2
'''
利用列表推导式: 找出100以内所有奇数，并将所有奇数乘以3，写入列表。

li = [i*3 for i in range(100) if i % 2 !=0 ]
print(li)
'''


# 题3
'''
猴子第一天摘下N个桃子，当时就吃了一半，还不过瘾，就又多吃了一个。第二天又将剩下的桃子吃掉一半，又多吃了一个。
以后每天都吃前一天剩下的一半零一个。
到第10天在想吃的时候就剩一个桃子了,
问第一天共摘下来多少个桃子？

def peach():
    i = 1
    j = 0
    while True:
        i = (i+1)*2
        j += 1
        if j > 10:
            break
        print(i)
peach()
'''

# 题4
'''
现有一个列表，其中有10个元素，元素均为int类型，列表内的数据是无序。
现在要求我们通过编写一个程序将这列表变成一个从小到大排序的列表
请用自己的代码完成。

import random

def generator():
    li_date = []
    for i in range(0,10):
        li_date.append(random.randint(0,100))
    return li_date

def list_sort(li_date):
    for i in range(0,len(li_date)):
        for j in range(i+1,len(li_date)):
            if li_date[i] > li_date[j]:
                li_date[i],li_date[j] = li_date[j],li_date[i]
    return li_date

print(list_sort(generator()))
'''


# 题目5
'''
定义一个函数：
    统计传入的字符串里，英文字母、空格、数字和其他字符分别出现次数，
    并作为一个字典返回   {'字母'：  ，'空格':   ,'数字':   ,'其他字符:' }

def total(str):
    total_kongge = 0
    total_zimu = 0
    total_shuzi = 0
    total_qita = 0
    for i in str:
        if i == ' ':
            total_kongge += 1
        elif i.isdigit():
            total_shuzi += 1
        elif i.isalpha():
            total_zimu += 1
        else:
            total_qita += 1
    new_dict = {'字母':total_zimu,'空格':total_kongge,'数字':total_shuzi,'其他字符':total_qita}
    return  new_dict

print(total('who are you? 1 @#'))
'''

# 题6
'''
请定义一个名为titles的函数：
    1.接收一句英文(字符串)作为参数
    2.将这个英文的每个单词转换成有且只有首字母大写的形式
    3.返回转换后的英文句
    4.str.title具有这个功能，但在此题不可使用str.title
例如：
>>> titles('this is python.')
'This Is Python.'
>>> titles('i love python')
'I Love Python'
'''
def titles(string):
    new_str = []
    new = string.split()
    for i in range (len(new)):
        stringnew = new[i].capitalize()
        new_str.append(stringnew)
    CapitalStr = ' '.join(new_str)
    print(CapitalStr)

titles('who are you?')
